package fragments;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.example.junior.activities.R;
import com.squareup.picasso.Picasso;

import basicas.AoMudarFavoritoListener;
import basicas.Time;
import repositorio.TimesDB;

/**
 * Created by Junior on 28/10/2014.
 */
public class DetalheTimeFragment extends Fragment {

    public static final String EXTRA_TIME = "time";

    private Time time;
    private TimesDB timesDB;
    private MenuItem menuItem;

    public static DetalheTimeFragment newInstance(Time time) {

        Bundle parametros = new Bundle();
        parametros.putSerializable(EXTRA_TIME, time);

        DetalheTimeFragment detalheTimeFragment = new DetalheTimeFragment();
        detalheTimeFragment.setArguments(parametros);

        return  detalheTimeFragment;

    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        timesDB = new TimesDB(getActivity());
        setHasOptionsMenu(true);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        time = (Time)getArguments().getSerializable(EXTRA_TIME);

        View view = inflater.inflate(
                R.layout.fragment_time_detalhe, container, false);


        TextView txtNome = (TextView)view.findViewById(R.id.txtNome);
        TextView txtEquipeSigla = (TextView)view.findViewById(R.id.txtEquipeSigla);
        TextView txtAproveitamento = (TextView)view.findViewById(R.id.txtAproveitamento);
        TextView txtVitorias = (TextView)view.findViewById(R.id.txtVitorias);
        TextView txtDerrotas = (TextView)view.findViewById(R.id.txtDerrotas);
        TextView txtEmpates = (TextView)view.findViewById(R.id.txtEmpates);
        TextView txtGolsContra = (TextView)view.findViewById(R.id.txtGolsContra);
        TextView txtGolsPro = (TextView)view.findViewById(R.id.txtGolsPro);
        TextView txtJogos = (TextView)view.findViewById(R.id.txtJogos);
        TextView txtPontos = (TextView)view.findViewById(R.id.txtPontos);
        TextView txtSaldosGols = (TextView)view.findViewById(R.id.txtSaldosGols);
        ImageView imgEscudo = (ImageView)view.findViewById(R.id.imgEscudo);


        Picasso.with(getActivity()).load(time.escudo).into(imgEscudo);

        txtNome.setText(time.nome);
        txtEquipeSigla.setText(time.equipe_sigla);
        txtAproveitamento.setText(time.aproveitamento);
        txtVitorias.setText(String.valueOf(time.vitorias));
        txtDerrotas.setText(String.valueOf(time.derrotas));
        txtEmpates.setText(String.valueOf(time.empates));
        txtGolsContra.setText(String.valueOf(time.gols_contra));
        txtGolsPro.setText(String.valueOf(time.gols_pro));
        txtJogos.setText(String.valueOf(time.jogos));
        txtPontos.setText(String.valueOf(time.pontos));
        txtSaldosGols.setText(String.valueOf(time.saldo_gols));

        return view;
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.detalhe_time, menu);
        menuItem = menu.findItem(R.id.action_favorito);
        atualizaMenuFavorito();
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == R.id.action_favorito){
            alterarFavorito();
        }
        return super.onOptionsItemSelected(item);
    }

    private void atualizaMenuFavorito(){
        if (timesDB.favoritos(time)){
            menuItem.setTitle(R.string.adicionaFavorito);
            menuItem.setIcon(android.R.drawable.ic_menu_close_clear_cancel);
        } else {
            menuItem.setTitle(R.string.excluiFavorito);
            menuItem.setIcon(android.R.drawable.ic_menu_add);
        }
    }

    private void alterarFavorito() {

        boolean favorito = timesDB.favoritos(time);

        int mensagem;
        if (favorito){
            timesDB.excluir(time);
            mensagem = R.string.timeExcluido;

        } else {
            timesDB.inserir(time);
            mensagem = R.string.timeadicionado;
        }
        Toast.makeText(getActivity(), mensagem, Toast.LENGTH_SHORT).show();

        if (getActivity() instanceof AoMudarFavoritoListener){
            AoMudarFavoritoListener listener =
                    (AoMudarFavoritoListener)getActivity();
            listener.aoMudarFavorito(time, !favorito);
        }

        atualizaMenuFavorito();
    }
}
